1、前言
Kong 的核心原则之一是它通过插件的可扩展性。插件允许你轻松的向服务添加新功能或使其更易于管理。
2、key-auth插件
在下面的步骤中,您将配置key-auth插件以向您的服务添加身份验证。在添加此插件之前, 对您的服务的所有请求都将在上游代理。添加和配置此插件后,只有具有正确密钥的请求才会被代理 - 所有其他请求将被Kong拒绝,从而保护您的上游服务免遭未经授权的使用。
3、配置Key-auth插件
要为您在Kong中配置的服务配置key-auth插件,请发出以下cURL请求:
3.1、 在service上启动插件
$ curl -i -X POST \
--url http://localhost:8001/services/{service name }/plugins/ \
--data 'name=key-auth'
3.2、在Route上启动插件
$ curl -i -X POST \
--url http://localhost:8001/routes/{routes id or name }/plugins/ \
--data 'name=key-auth'
注意:此插件还接受一个 config.key_name的默认参数【’apikey’】。他是一个标题和参数名称列表(两者都支持),请求期间需要包含apikey参数。
3.3、key-auth Api 参数列表
形式参数 | 默认值 | 描述 |
name | 插件名称 | |
serivce_id | 服务id | |
toute_id | 路由id | |
enabled | TRUE | 是否启用 |
config.key_names | apikey | key的名称,用逗号隔开,只能是大小写字母,数字,下划线杠等 |
config.key_in_body | FALSE | 如果启用,插件读取请求体,并尝试从中读取到key |
config.hide_credentials | 如果身份验证失败,该值(消费之uuid)用做匿名使用者。如果为空,请求失败提示认证失败 4xx,注意这个值必须制定消费者id属性,而不是他的custom_id | |
config.ren_on_preflight | TRUE | 如果设置为true那么插件将运行在请求之前。如果为false那么请求将总是被允许。 |
根据上述操作、一个简单的插件就常见完成了, 我在测试时是创建在service上,用的是《【API网关Kong系列七】- 完整转发请求示例》 中的服务示例.
3.4、验证插件
发送以下CURL命令以验证key-auth插件是否已配置成功。
$ curl -i -X GET \
--url http://localhost:8000/ \
--header 'Host: example.com'
由于未指定所有的apikey heaser 或者参数,因此响应为 401 Unauthorized
HTTP/1.1 401 Unauthorized
...
{
"message": "No API key found in request"
}
由上我们已经成功配置了key-auth 插件,想使用我们还的将消费者添加到服务中,以便我们可以继续通过Kong 实现代理请求。
4、添加一个消费者
消费者Consumer我在这就不过多的介绍了, 还不了解的可以看《企业级API网关Kong系列》
创建一个用户名为Jason的消费者
$ curl -i -X POST \
--url http://localhost:8001/consumers/ \
--data "username=Jason"
响应如下
HTTP/1.1 201 Created
Content-Type: application/json
Connection: keep-alive
{
"username": "Jason",
"created_at": 1428555626000,
"id": "bbdf1c48-19dc-4ab7-cae0-ff4f59d87dc9"
}
到这成功的将消费者添加到Kong 中
注意:custom_id在创建可以在创建消费着是指定此参数。
5、为消费者提供密钥凭证
$ curl -i -X POST \
--url http://localhost:8001/consumers/Jason/key-auth/ \
--data 'key=ENTER_KEY_HERE'
6、验证
可以发送如下请求, 来验证我们的Jason的密钥是否生效
$ curl -i -X GET \
--url http://localhost:8000 \
--header "Host: example.com" \
--header "apikey: ENTER_KEY_HERE"
好了, 到这我们一个Key-auth的插件已经配置完成。
7.总结
插件的使用也很简单, 主要为以下几个步骤。
1: 首先要启用一个插件,可以在service或者route上。
2: 需要给插件创建一个消费者,并设置访问凭着
想了解更多关于Kong网关的请移步 >>>>> 企业级API网关Kong
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。